﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Model;
using BLL;
using System.IO;

namespace HRP.Private.Faltas
{
    public partial class Editar : System.Web.UI.Page
    {
        public string idField;
        private string _NomeFuncionario
        {
            get
            {
                if (ViewState["NomeFuncionario"] != null)
                {
                    return (string)ViewState["NomeFuncionario"];
                }
                return string.Empty;
            }
            set
            {
                ViewState["NomeFuncionario"] = value;
            }
        }
        public string NomeFuncionario
        {
            get
            {
                return _NomeFuncionario;
            }
            set
            {
                _NomeFuncionario = value;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString["id"] != null && Request.QueryString["funcId"] != null && Session["userid"] != null && Session["EmpresaActual"] != null && Session["idclient"] != null)
            {
                int funcId = 0;
                int faltaId= 0;
                int clienteId = (int)Session["idclient"];
                hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                Int32.TryParse(Request.QueryString["funcId"], out funcId);
                Int32.TryParse(Request.QueryString["id"], out faltaId);
                if (funcId > 0 && faltaId>0 &&
                    Funcionario_BLL.Instance.FuncionarioExiste(clienteId, empresa.id, funcId)
                    && Falta_BLL.Instance.FaltaExiste(faltaId, funcId))
                {
                    if (!Page.IsPostBack)
                    {
                        var funcionarioActual = Funcionario_BLL.Instance.ObterFuncionario(clienteId, empresa.id, funcId);
                        hrp_faltas faltaActual = funcionarioActual.Faltas.Where(f=>f.id==faltaId).FirstOrDefault();
                        CarregarDados(faltaActual);
                        NomeFuncionario = funcionarioActual.Dados.nome;
                        hrp_contratos contratoFunc = Funcionario_BLL.Instance.ObterContratoFuncionario(funcId);
                        DateTime dataInicio = contratoFunc != null && contratoFunc.data_inicio.HasValue ? contratoFunc.data_inicio.Value : DateTime.MinValue;
                        DateTime dataFim = contratoFunc != null && contratoFunc.data_fim.HasValue ? contratoFunc.data_fim.Value : DateTime.MaxValue;
                        idField = "\n$(\"#" + dataFalta.ClientID + "\"" + @").datepicker({ 
                                    dateFormat: 'yy-mm-dd', 
                                    monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
                                    dayNamesMin: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],
                                    dayNamesShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],
                                    minDate: new Date('" + dataInicio.ToString("yyyy/MM/dd") + @"'),
                                    maxDate: new Date('" + dataFim.ToString("yyyy/MM/dd") + @"')});";
                    }
                    RegistoFaltasPanel.Visible = true;
                    erroPanel.Visible = false;
                    msgPanel.Visible = false;
                }
                else
                {
                    RegistoFaltasPanel.Visible = false;
                    erroPanel.Visible = true;
                    msgPanel.Visible = false;
                }
                criarFaltaBT.Click += new EventHandler(criarFaltaBT_Click);
            }
            else
            {
                RegistoFaltasPanel.Visible = false;
                erroPanel.Visible = true;
                msgPanel.Visible = false;
            }

        }

        private void CarregarDados(hrp_faltas faltaActual)
        {
            dataFalta.Text = faltaActual.data_inicio.ToString("yyyy/MM/dd");
            DropDownList1.SelectedIndex = faltaActual.dia_completo ? 0 : 1;
            faltaJustificadaDropDown.SelectedIndex = faltaActual.falta_justificada.Value ? 0 : 1;
            obsTB.Text = faltaActual.obs;
        }

        void criarFaltaBT_Click(object sender, EventArgs e)
        {
            if (!Page.IsValid)
                return;

            if (Request.QueryString["id"] != null && Request.QueryString["funcId"] != null && Session["userid"] != null && Session["EmpresaActual"] != null && Session["idclient"] != null)
            {
                int funcId = 0;
                Int32.TryParse(Request.QueryString["funcId"], out funcId);
                int faltaId = 0;
                Int32.TryParse(Request.QueryString["id"], out faltaId);
                if (funcId > 0 && faltaId>0)
                {
                    int clienteId = (int)Session["idclient"];
                    hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];

                    //caminho foto
                    string finalPath = string.Empty;
                    //TODO: mimetype
                    if (documentoFileUpload.HasFile && !documentoFileUpload.PostedFile.ContentType.StartsWith("exe"))
                    {
                        string fileName = documentoFileUpload.PostedFile.FileName;
                        FileInfo fi = new FileInfo(fileName);
                        string ext = fi.Extension;
                        string path = Server.MapPath("/images/" + empresa.id + "/") + Guid.NewGuid().ToString() + ext;
                        string folderPath = Server.MapPath("/images/" + empresa.id + "/");
                        if (!System.IO.Directory.Exists(folderPath))
                        {
                            System.IO.Directory.CreateDirectory(folderPath);
                        }
                        documentoFileUpload.PostedFile.SaveAs(path);
                        //gravar na bd caminho de imagem
                        int index = path.LastIndexOf("images");
                        finalPath = path.Substring(index - 1, (path.Count() - index + 1));
                    }

                    DateTime dataInicio = Convert.ToDateTime(dataFalta.Text);

                    Falta_BLL.Instance.AlterarFalta(faltaId,clienteId, Session["userid"].ToString(), Request.UserHostAddress, funcId,
                        dataInicio, obsTB.Text, Convert.ToInt32(DropDownList1.SelectedValue)==1, empresa.id, finalPath, Convert.ToInt32(faltaJustificadaDropDown.SelectedValue) == 1);

                    RegistoFaltasPanel.Visible = false;
                    erroPanel.Visible = false;
                    msgPanel.Visible = true;
                    return;
                }
            }
            RegistoFaltasPanel.Visible = false;
            erroPanel.Visible = true;
            msgPanel.Visible = false;

        }
    }
}